#include "hasync.h"
#include <iostream>
#include <chrono>

// 一个耗时的函数
int longRunningTask(int x, int y) {
    std::this_thread::sleep_for(std::chrono::seconds(2));
    return x + y;
}

// 实际使用一样不大，除非使用扩展库实现then链式调用
// 所以不如创建个线程执行完postevent回到主循环

int main() {
    // 初始化全局线程池
    hv::async::startup();

    // 异步执行任务
    auto future = hv::async(longRunningTask, 10, 20);

    // 做一些其他工作
    std::cout << "Doing some other work..." << std::endl;

    // 获取异步任务的结果（这里会等待任务完成）
    int result = future.get();
    std::cout << "Result: " << result << std::endl;

    // 使用 lambda 表达式
    auto future2 = hv::async([]() {
        std::cout << "This is an async lambda task." << std::endl;
        return 42;
    });

    int result2 = future2.get();
    std::cout << "Lambda result: " << result2 << std::endl;

    // 清理全局线程池
    hv::async::cleanup();

    return 0;
}